package ljl.bilibili.gateway.constant;

import java.util.HashMap;
import java.util.Map;

//@Component
/**
 * 本类用于定义和存储项目中使用的各种常量
 */
public class Constant {
    /**
     * 存储验证码的Map，键为标识符，值为验证码字符串
     */
    public static final Map<String, String> CAPTCHA = new HashMap<>();

    /**
     * 表示会话存在的标识符，用于在会话中存储或检索特定值
     */
    public static final String HAS_SESSION = "hasSession";

    /**
     * 验证码图片的宽度
     */
    public static final int WIDTH = 160;

    /**
     * 验证码图片的高度
     */
    public static final int HEIGHT = 40;

    /**
     * 验证码字符的数量
     */
    public static final int CODE_COUNT = 4;

    /**
     * 验证码中干扰线的数量
     */
    public static final int LINE_COUNT = 20;

    /**
     * 验证码字符序列，定义了验证码中可能包含的字符
     */
    public static final char[] CODE_SEQUENCE = {'0', '1',
            '2', '3', '4', '5', '6', '7', '8', '9'
    };

    /**
     * 会话ID的标识符，用于在会话中存储或检索特定值
     */
    public static final String SESSIONID = "sessionId";

    /**
     * 验证码图片的标识符，用于在会话中存储或检索特定值
     */
    public static final String CAPTCHA_IMAGE = "image";

    /**
     * 验证码代码的标识符，用于在会话中存储或检索特定值
     */
    public static final String CAPTCHA_CODE = "code";

    /**
     * 用户身份的标识符，用于在会话中存储或检索特定值
     */
    public static final String USERIDENTITY = "userId";

    /**
     * 安全请求的头部标识符，用于标识特定的安全请求
     */
    public static final String SAFE_REQUEST_HEADER = "aigcBiliBiliHeader";

    /**
     * 短期授权令牌的标识符
     */
    public static final String SHORT_TOKEN = "shortAuthorization";

    /**
     * 长期授权令牌的标识符
     */
    public static final String LONG_TOKEN = "longAuthorization";

    /**
     * 短期授权令牌的过期时间（毫秒），这里设置为30分钟
     */
    public static final int SHORT_TOKEN_EXPIRATION = 30 * 60 * 1000;

    /**
     * 秘钥，用于加密和解密令牌
     */
    public static final String SECRET_KEY = "labilibili_key";

    /**
     * 令牌的主题，用于在JWT令牌中标识发行者
     */
    public static final String TOKEN_SUBJECT = "labilibili";

    /**
     * 长期授权令牌的过期时间（毫秒），这里设置为7天
     */
    public static final int LONG_TOKEN_EXPIRATION = 7 * 24 * 60 * 60 * 1000;

    /**
     * JWT中的角色标识符，用于在JWT令牌中存储用户角色
     */
    public static final String JWT_ROLE = "role";

    /**
     * JWT中的角色名称，用于标识普通用户角色
     */
    public static final String JWT_ROLE_NAME = "user";

    /**
     * 数据表名称的标识符，用于在数据库操作中标识数据表
     */
    public static final String TABLE_NAME = "table";

    /**
     * 用户表的名称，用于在数据库操作中标识用户表
     */
    public static final String USER_TABLE_NAME = "user";

    /**
     * 操作类型的标识符，用于在数据库操作中标识操作类型
     */
    public static final String OPERATION_TYPE = "type";

    /**
     * 添加操作的标识符，用于标识添加操作
     */
    public static final String OPERATION_TYPE_ADD = "add";

    /**
     * 用户名字段的标识符，用于在数据库操作中忽略用户名字段
     */
    public static final String TABLE_IGNORE_USERNAME = "userName";

    /**
     * 密码字段的标识符，用于在数据库操作中忽略密码字段
     */
    public static final String TABLE_IGNORE_PASSWORD = "password";

    /**
     * 电话号码字段的标识符，用于在数据库操作中忽略电话号码字段
     */
    public static final String TABLE_IGNORE_PHONE_NUMBER = "phoneNumber";

    /**
     * 邮箱号码字段的标识符，用于在数据库操作中忽略邮箱号码字段
     */
    public static final String TABLE_IGNORE_MAIL_NUMBER = "mailNumber";
}
